設計中秋卡片應用程式,練習用Compose 新增按鈕來換圖片
使用remember 加到可組合項,可組合函式能夠將物件儲存在記憶體中。
在 remember 可組合項主體傳入 mutableStateOf() 函式,然後向函式傳遞 1 引數。
var result by remember { mutableStateOf(1) }
再宣告一個不可變的 imageResource 變數,接受 result 變數,決定resource圖
val imageResource = when (result) {
        1 -> R.drawable.moon
        2 -> R.drawable.moon_2
        3 -> R.drawable.moon_3
        4 -> R.drawable.moon_4
        5 -> R.drawable.moon_5
        else -> R.drawable.moon_6
    }
修改 GreenImage function 加傳入 imageResource參數
記得 Preview 也要修改哦
@Composable
fun GreenImage(imageResource: Int) {
    Image(painter = painterResource(id = imageResource), contentDescription = "moon")
}
@Preview(showBackground = true)
@Composable
fun GreetingImagePreview() {
    GreenImage(R.drawable.moon_6)
}
加入按鈕實作
@Composable
fun Greeting(name: String, from: String, modifier: Modifier = Modifier) {
    var result by remember { mutableStateOf(1) }
    val imageResource = when (result) {
        1 -> R.drawable.moon
        2 -> R.drawable.moon_2
        3 -> R.drawable.moon_3
        4 -> R.drawable.moon_4
        5 -> R.drawable.moon_5
        else -> R.drawable.moon_6
    }
    Column(
        verticalArrangement = Arrangement.Center,
        modifier = modifier
    ) {
        Box() {
            GreenImage(imageResource)
            Text(
                text = name,
                modifier = Modifier.align(Alignment.TopStart),
                fontSize = 32.sp,
                color = Color.White,
                lineHeight = 116.sp,
                textAlign = TextAlign.Center
            )
            Text(
                text = from,
                fontSize = 28.sp,
                color = Color.White,
                modifier = Modifier
                    .align(Alignment.BottomEnd)
                    .padding(16.dp),
            )
        }
        Button(
            onClick = {
                result = (1..6).random()
            },
            modifier = Modifier.fillMaxWidth()
                .padding(16.dp)
        ) {
            Text(text = "按我換圖")
        }
        Text(text =result.toString(),
            fontSize = 20.sp,
            modifier=Modifier.padding(16.dp)
            )
    }
}
